package com.Annotation注解;

/**
 * 作    者 ：吾路巴尼
 * 创建时间 ：2025/2/13-12:18
 */
public class Override {
}
/***
 * 1.@Override注解：检查是否重写了父类的方法
 *编译器会检查是否真的重写了方法，如果是重写了则通过，如果未重写或重写失败会报错
 *如果你没写@Override注解但重写了方法，编译器自动识别为重写方法；
 *
 *2.Override原码： public @interface Override {  }  注意@interface不是interface接口，是一个注解类；
 *
 *3. Override注解只能用于方法上，不能用于其他类型上；
 * 因为 @Target(ElementType.METHOD) @Target注解是用来指定注解的作用范围，作用范围是方法上，所以@Override注解只能用于方法上。
 * @Target是元注解，元注解是修饰注解的注解；
 */
class Father{
    public void show(){
        System.out.println("Father show");
    }
}
class Son extends Father{
    /** 如果你用了@Override注解，编译器会检查是否真的重写了方法，如果是重写了则通过，如果未重写或重写失败会报错*/
    @java.lang.Override
    public void show(){
        System.out.println("Son show");
    }
//    @java.lang.Override  报错：方法未从其超类重写方法，我加上了@Override注解，编译器会检查处并未重写方法，会报错
    public void test(){
        System.out.println("Son test");
    }
}